5 DV=PEEK(186):IFDV<8THENDV=8 8 POKE53371,0 10 DIMM%(5,5,27) 20 DIME(5),E$(5),F(8),H(5) 30 DIMS(88),S1%(120,5),S2%(120,88),T%(120) 40 DIMG%(50,2),G$(50) 50 K$="[150] [144] [150] [144] [150] [144] [150] [144] [146]":L$="[144] [150] [144] [150] [144] [150] [144] [150] [144][146]" 60 M$="[150] [144] [150] [144] [150] [144] [150] [144] [146]":N$="[144] [150] [144] [150] [144] [150] [144] [150] [144][146]" 70 GOSUB1510:FORI=1TO5:READH(I):NEXT 80 PRINT"-[199]ENERATING MATRIX OF MOVES." 90 FORI=1TO5:M%(1,I,0)=0 100 IFE(I)-10*INT(E(I)/10+.01)<3ORE(I)>78THEN120 110 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)+8 120 IFE(I)-10*INT(E(I)/10+.01)=1ORE(I)>68THEN140 130 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)+19 140 IFE(I)-10*INT(E(I)/10+.01)=8ORE(I)>67THEN160 150 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)+21 160 IFE(I)-10*INT(E(I)/10+.01)>6ORE(I)>76THEN180 170 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)+12 180 IFE(I)-10*INT(E(I)/10+.01)>6ORE(I)<21THEN200 190 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)-8 200 IFE(I)-10*INT(E(I)/10+.01)=8ORE(I)<31THEN220 210 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)-19 220 IFE(I)-10*INT(E(I)/10+.01)=1ORE(I)<32THEN240 230 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)-21 240 IFE(I)-10*INT(E(I)/10+.01)<3ORE(I)<23THEN260 250 M%(1,I,0)=M%(1,I,0)+1:M%(1,I,M%(1,I,0))=E(I)-12 260 NEXT 270 FORI=1TO5:M%(2,I,0)=0 280 L1=E(I)-10*INT(E(I)/10+.01):L2=INT(E(I)/10+.01):IFL1=1ORL2=8THEN310 290 L3=L1-1:IF8-L2G%(G%(0,1),2)THEN980 970 F(6)=F(6)+1:T%(F(6))=T%(I):F(8)=F(7):F(7)=T%(I) 980 NEXT:T%(0)=F(6) 990 IFT%(0)=0THEN2640 1000 IFT%(0)=1THEN1420 1010 PRINT"[145]-[199]ENERATING MATRIX TO COMPARE SQUARES." 1020 FORI=11TO88:S(I)=0:NEXT 1030 FORI=11TO81STEP10:FORJ=0TO7:FORK=0TO5:F(K)=0:NEXT 1040 FORK=1TOT%(0):F(S2%(T%(K),I+J))=F(S2%(T%(K),I+J))+1:NEXT 1050 FORK=0TO5:S(I+J)=S(I+J)+ABS(F(K)-T%(0)/6):NEXT 1060 NEXTJ,I 1070 IF SE=1 THEN1270 1080 FORI=1TO5:S(E(I))=500:NEXT 1090 IF T%(0)>2 THEN1270 1100 FL=0:FORI=11TO81STEP10:FORJ=0TO7 1110 IF S2%(F(7),I+J)=S2%(F(8),I+J) THEN1150 1120 FORK=1TO5:IFE(K)=I+J THENK=9 1130 NEXT:IF K>9 THEN1150 1140 FL=1:J=7:I=81 1150 NEXTJ,I:IF FL=1 THEN1270 1160 PRINT"[147][199]UESSING AT COMPLETE ARRANGEMENT:" 1170 PRINT"[211]QUARE ?S:";G%(0,1);" [208]OSITION ?S: 1":GOSUB2500 1180 PRINT" [203]NIGHT ON ";E$(S1%(F(8),1));"," 1190 PRINT" [194]ISHOP ON ";E$(S1%(F(8),2));"," 1200 PRINT" [210]OOK ON ";E$(S1%(F(8),3));"," 1210 PRINT" [209]UEEN ON ";E$(S1%(F(8),4));", AND" 1220 PRINT" [203]ING ON ";E$(S1%(F(8),5));".":PRINT 1230 PRINT"[201]S THIS RIGHT (Y/N)? ";:POKE198,0 1240 GETA$:IF ((A$<>"Y") AND (A$<>"N")) THEN GOTO1240 1250 IF (A$="Y") THEN PRINT"[217]ES.":GOTO1500 1260 G%(0,1)=G%(0,1)+1:G%(G%(0,1),1)=F(8)+1000:PRINT"[206]O.":GOTO1420 1270 PRINT"[145]-[211]ELECTING BEST SCORING SQUARE. " 1280 IF (G%(0,1)<1) THEN GOTO1300 1290 FORI=1TOG%(0,1):S(G%(I,1))=999:NEXT 1300 G%(0,1)=G%(0,1)+1:G%(G%(0,1),1)=11 1310 FORI=11TO81STEP10:FORJ=0TO7 1320 IF (S(I+J)"5")) THEN GOTO1400 1410 G%(G%(0,1),2)=VAL(A$):PRINTVAL(A$):PRINT:GOTO930 1420 PRINT"[147][211]OLUTION FOUND AFTER";G%(0,1);"GUESS"; 1430 IFG%(0,1)<>1THENPRINT"ES"; 1440 PRINT".":GOSUB2570 1450 PRINT"[203]NIGHT ON SQUARE ";E$(S1%(F(7),1));"," 1460 PRINT"[194]ISHOP ON SQUARE ";E$(S1%(F(7),2));"," 1470 PRINT"[210]OOK ON SQUARE ";E$(S1%(F(7),3));"," 1480 PRINT"[209]UEEN ON SQUARE ";E$(S1%(F(7),4));", AND" 1490 PRINT"[203]ING ON SQUARE ";E$(S1%(F(7),5));"." 1500 GOTO2740 1510 POKE53280,13:POKE53281,13:PRINT"[147]";CHR$(14);"[144] [212]O [211]OLVE [205]YSTERY [211]QUARE [195]HESS":PRINT 1520 PRINTTAB(7);"[208]ROGRAMMED BY [198]LOYD [203]IRK":PRINT 1530 PRINT" [212]HIS PROGRAM IS TO SOLVE THE PROBLEM" 1540 PRINT"GENERATED BY THE [205]YSTERY [211]QUARE [195]HESS" 1550 PRINT"PROGRAM OR BY A PERSON. [198]IVE SQUARES" 1560 PRINT"ARE CHOSEN ON A CHESSBOARD AND THEIR" 1570 PRINT"COORDINATES GIVEN TO THIS PROGRAM. [212]HE" 1580 PRINT"PROGRAM WILL PLACE A [203]NIGHT, [194]ISHOP," 1590 PRINT"[210]OOK, [209]UEEN, AND [203]ING ON THE FIVE" 1600 PRINT"MYSTERY SQUARES BY ASKING ONLY 2 TYPES" 1610 PRINT"OF QUESTIONS:" 1620 PRINT" 1. [215]HEN THE PIECES ARE PROPERLY SET UP,"; 1630 PRINT" HOW MANY ATTACK [212][200][201][211] SQUARE?" 1640 PRINT" 2. [201]S THIS THE CORRECT POSITION?" 1650 PRINT" [193]S THE PIECE NAMES SUGGEST, THESE HAVE"; 1660 PRINT"THE ATTACKING ABILITIES OF THEIR CHESS" 1670 PRINT"COUNTERPARTS, EXCEPT THAT THEY CAN" 1680 PRINT"ATTACK [212][200][210][207][213][199][200] ANY OTHER PIECE. [197]ACH" 1690 PRINT"MAN ATTACKS AS THOUGH IT IS THE ONLY" 1700 PRINT"MAN ON THE BOARD." 1710 PRINTTAB(5);"<-[208]RESS SPACE-BAR FOR MORE.->":POKE198,0 1712 FORI=217TO242:POKEI,PEEK(I)OR128:NEXT 1720 GETA$:IFA$=""THEN1720 1730 PRINT"[147] [212]HE [193]TTACK [208]ATTERNS OF THE [208]IECES":PRINT 1740 PRINT"[206] = [203]NIGHT [194] = [194]ISHOP [209] = [209]UEEN" 1750 PRINT"[210] = [210]OOK [203] = [203]ING X = [193]TTACKED [211]QUARE":PRINT 1760 PRINT" [150]X[144] [150] [144] [150] [144] [150] [144] [146] [150] [144] [150] [144]X[150] [144] [150] [144] [146] "; 1770 PRINT" [150] [144] [150] [144]X[150] [144] [150] [144]X[146] ";M$ 1780 PRINT" [144] [150]X[144] [150] [144] [150] [144] [150]X[146] [144] [150] [144] [150]X[144] [150] [144] [150] [146][144] "; 1790 PRINT" [144]X[150] [144] [150]X[144] [150] [144]X[150] [146] [144] [150] [144] [150]X[144] [150]X[144] [150] [146][144] "; 1800 PRINT" [150] [144] [150]X[144] [150] [144] [150]X[144] [146] [150] [144] [150] [144]X[150] [144] [150] [144] [146] "; 1810 PRINT" [150] [144]X[150] [144]X[150] [144]X[150] [144] [146] [150] [144] [150]X[144] [150] [144] [150]X[144] [146] "; 1820 PRINT" [144] [150] [144] [150]X[144] [150]X[144] [150] [146] [144]X[150]X[144]X[150][210][144]X[150]X[144]X[150]X[146][144] "; 1830 PRINT" [144] [150] [144]X[150]X[144]X[150] [144] [150] [146] [144] [150] [144] [150] [144][206][150] [144] [150] [146][144] "; 1840 PRINT" [150] [144] [150] [144] [150][194][144] [150] [144] [146] [150] [144] [150] [144]X[150] [144] [150] [144] [146] "; 1850 PRINT" [150]X[144]X[150]X[144][209][150]X[144]X[150]X[144]X[146] [150] [144] [150]X[144] [150] [144] [150]X[144] [146] "; 1860 PRINT" [144] [150] [144] [150]X[144] [150]X[144] [150] [146] [144] [150] [144] [150]X[144] [150] [144] [150] [146][144] "; 1870 PRINT" [144] [150] [144]X[150]X[144]X[150] [144] [150] [146] [144] [150] [144] [150]X[144] [150]X[144] [150] [146][144] "; 1880 PRINT" [150] [144] [150]X[144] [150] [144] [150]X[144] [146] [150] [144] [150] [144]X[150] [144] [150] [144] [146] "; 1890 PRINT" [150] [144]X[150] [144]X[150] [144]X[150] [144] [146] ";M$ 1900 PRINT" [144] [150]X[144] [150] [144] [150] [144] [150]X[146] [144] [150] [144] [150]X[144] [150] [144] [150] [146][144] "; 1910 PRINT" [144]X[150] [144] [150]X[144] [150] [144]X[150] [146] ";N$:PRINT 1920 PRINT" ";M$;" [194] ATTACKS DIAGONALLY." 1930 PRINT" ";N$;" [210] VERTICALLY & HORIZONTALLY." 1940 PRINT" [150] [144]X[150]X[144]X[150] [144] [150] [144] [146] [209] COMBINES [194] AND [210] ATTACKS." 1950 PRINT" [144] [150]X[144][203][150]X[144] [150] [144] [150] [144][146] [206] 2 OVER AND 1 ACROSS." 1960 PRINT" [150] [144]X[150]X[144]X[150] [144] [150] [144] [146] [203] ATTACKS NEAREST SQUARES." 1970 PRINT" ";N$ 1980 PRINT" ";M$;" [206]O MAN ATTACKS ITS OWN SQUARE"; 1990 PRINT" ";N$;" [206]O ATTACK CROSSES BOARD EDGE." 2000 PRINTTAB(5);"<-[208]RESS SPACE-BAR FOR MORE.->":POKE198,0 2002 FORI=217TO242:POKEI,PEEK(I)OR128:NEXT 2010 GETA$:IFA$=""THEN2010 2020 PRINT"[147]";TAB(5);"[197]NTERING THE [205]YSTERY [211]QUARES":PRINT 2030 PRINT" [212]YPE THE [204][197][212][212][197][210] OF THE COLUMN AND THEN"; 2040 PRINT"TYPE THE [206][213][205][194][197][210] OF THE ROW CONTAINING" 2050 PRINT"THE MYSTERY SQUARE. [210]EPEAT FOR ALL FIVE." 2060 PRINTTAB(14);"8 ";M$:PRINTTAB(14);"7 ";N$:PRINTTAB(14);"6 ";M$:PRINTTAB(14);"5 ";N$ 2070 PRINTTAB(14);"4 ";M$:PRINTTAB(14);"3 ";N$:PRINTTAB(14);"2 ";M$:PRINTTAB(14);"1 ";N$ 2080 PRINTTAB(16);"ABCDEFGH":PRINT 2090 FORI=1TO7:PRINT" ":NEXT:PRINT"[145][145][145][145][145][145][145]"; 2100 FORI=1TO5 2110 PRINT"[205]YSTERY SQUARE";I;"IS ON: [157][157]";:POKE198,0 2112 FORZ=217TO242:POKEZ,PEEK(Z)OR128:NEXT 2120 GETA$:IFA$=""THEN2120 2130 IFA$<"A"ORA$>"H"THEN2120 2140 PRINTA$;:E$(I)=A$:E(I)=ASC(A$)-64 2150 GETA$:IFA$=""THEN2150 2160 IFA$<"1"ORA$>"8"THEN2150 2170 PRINTA$:E$(I)=E$(I)+A$:E(I)=E(I)+VAL(A$)*10: 2180 IFI=1THEN2210 2190 FL=0:FORJ=1TOI-1:IFE(J)=E(I)THENFL=1:J=I 2200 NEXT:IFFL=1THENPRINT"[145]";:GOTO2110 2210 POKE1599-VAL(A$)*40+ASC(LEFT$(E$(I),1))-64,170:NEXT 2220 PRINT:PRINT"[201]S THIS CORRECT (Y/N)? ";:POKE198,0 2230 GETA$:IFA$<>"Y"ANDA$<>"N"THEN2230 2240 IFA$="N"ORA$="[206]"THENPRINT"[206]O.":GOTO2020 2250 IFA$<>"Y"ANDA$<>"[217]"THEN2230 2260 PRINT"[217]ES." 2270 PRINT"[147]";" [193]SKING ABOUT THE [205]YSTERY [211]QUARES":PRINT 2280 PRINT" [212]HE ORIGINAL VERSION OF THIS GAME DID" 2290 PRINT"NOT ALLOW A PERSON TO ASK HOW MANY TIMES"; 2300 PRINT"THE MYSTERY SQUARES THEMSELVES WERE" 2310 PRINT"ATTACKED. [201] FOUND THAT ALLOWING SUCH" 2320 PRINT"QUESTIONS LED TO AN ELEGANT SOLUTION." 2330 PRINT"[217]OU MAY CHOOSE WHICH VERSION THE" 2340 PRINT"COMPUTER IS TO PLAY.":PRINT 2350 PRINT"[211]ELECT ONE: ([208]RESS 1 OR 2)" 2360 PRINT"1. [195][193][206] ASK # ATTACKS ON MYSTERY SQUARES."; 2370 PRINT"2. [195]AN [206][207][212] QUERY MYSTERY SQUARES.":PRINT:POKE198,0 2372 FORI=217TO242:POKEI,PEEK(I)OR128:NEXT 2380 GETA$:IF ((A$<>"1") AND (A$<>"2")) THEN GOTO2380 2390 SE=VAL(A$):PRINT"[195]OMPUTER [195][193][206] ";:IF (SE=1) THEN2410 2400 PRINT"[206][207][212] "; 2410 PRINT"QUERY MYSTERY SQUARES.":PRINT:RETURN 2420 PRINT:PRINTTAB(10);"8 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"7 ";L$:PRINTTAB(12);L$ 2430 PRINTTAB(10);"6 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"5 ";L$:PRINTTAB(12);L$ 2440 PRINTTAB(10);"4 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"3 ";L$:PRINTTAB(12);L$ 2450 PRINTTAB(10);"2 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"1 ";L$:PRINTTAB(12);L$ 2460 PRINTTAB(12);"A B C D E F G H":PRINT 2470 FORI=1TO5:POKE1834-VAL(RIGHT$(E$(I),1))*80+(ASC(LEFT$(E$(I),1))-64)*2,170:NEXT 2480 POKE1875-VAL(C$)*80+(ASC(B$)-64)*2,191 2490 RETURN 2500 PRINT:PRINTTAB(14);"8 ";M$:PRINTTAB(14);"7 ";N$:PRINTTAB(14);"6 ";M$:PRINTTAB(14);"5 ";N$ 2510 PRINTTAB(14);"4 ";M$:PRINTTAB(14);"3 ";N$:PRINTTAB(14);"2 ";M$:PRINTTAB(14);"1 ";N$ 2520 PRINTTAB(16);"ABCDEFGH":PRINT 2530 FORI=1TO5 2540 POKE1479-VAL(RIGHT$(E$(S1%(F(8),I)),1))*40+ASC(LEFT$(E$(S1%(F(8),I)),1))-64,H(I) 2550 NEXT 2560 RETURN 2570 PRINT:PRINTTAB(14);"8 ";M$:PRINTTAB(14);"7 ";N$:PRINTTAB(14);"6 ";M$:PRINTTAB(14);"5 ";N$ 2580 PRINTTAB(14);"4 ";M$:PRINTTAB(14);"3 ";N$:PRINTTAB(14);"2 ";M$:PRINTTAB(14);"1 ";N$ 2590 PRINTTAB(16);"ABCDEFGH":PRINT 2600 FORI=1TO5 2610 POKE1439-VAL(RIGHT$(E$(S1%(F(7),I)),1))*40+ASC(LEFT$(E$(S1%(F(7),I)),1))-64,H(I) 2620 NEXT 2630 RETURN 2640 PRINT"[147][206]O SOLUTION FOUND; PLEASE CHECK ANSWERS." 2650 PRINTTAB(10);"8 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"7 ";L$:PRINTTAB(12);L$ 2660 PRINTTAB(10);"6 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"5 ";L$:PRINTTAB(12);L$ 2670 PRINTTAB(10);"4 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"3 ";L$:PRINTTAB(12);L$ 2680 PRINTTAB(10);"2 ";K$:PRINTTAB(12);K$:PRINTTAB(10);"1 ";L$:PRINTTAB(12);L$ 2690 PRINTTAB(12);"A B C D E F G H":PRINT 2700 FORI=1TO5:POKE1754-VAL(RIGHT$(E$(I),1))*80+(ASC(LEFT$(E$(I),1))-64)*2,170:NEXT 2710 FORI=1TOG%(0,1) 2720 POKE1795-VAL(RIGHT$(G$(I),1))*80+(ASC(LEFT$(G$(I),1))-64)*2,G%(I,2)+176 2730 NEXT 2740 GOTO3000 2750 DATA206,194,210,209,203 3000 PRINT" [144]([193][144])NOTHER PUZZLE 3010 [153]" ((null)STOP)(null)ATNSTR$(null)(null)ATN(null) 3030 POKE198,0 3040 GETA$:IFA$<>"A"ANDA$<>"L"THEN3040 3050 IFA$="L"THEN40000 3070 RUN 10000 D=PEEK(186):N$="B.SOLVE MYSCHESS":OPEN15,D,15,"S0:"+N$:CLOSE15:SAVEN$,D:END 40000 FORI=8TO29:POKE820+I,I:NEXT:IFDV>8ANDDV<30THENPOKE828,DV:POKE820+DV,8 40010 A$="PRESENTER":GOSUB40030:A$="HELLO CONNECT":GOSUB40030 40020 PRINT"[147]":POKE53272,23:POKE186,8:POKE2048,0:POKE44,8:POKE43,1:END 40030 FORJ=8TO29:I=PEEK(820+J):IFI=14THENNEXT 40040 CLOSE2:OPEN2,I,2:CLOSE2:IFSTTHEN40060 40050 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN40070 40060 NEXT:RETURN 40070 A$="HELLO CONNECT":Q$=CHR$(34):POKE646,PEEK(53281):PRINT"[147]":POKE53272,23 40080 PRINT"[147]P[207]2048,0:P[207]44,8:P[207]43,1:P[207]56,160:P[207]55,0:CLR:L[207]"Q$A$Q$","I 40090 PRINT"RUN:":POKE631,13:POKE632,13:POKE198,2:END